package br.siseventos.model;
// Generated 29/10/2012 23:23:36 by Hibernate Tools 3.2.1.GA

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;

/**
 * TbTarefa generated by hbm2java
 */
@Entity
@Table(name = "tb_tarefa", catalog = "SisEventosDB", uniqueConstraints =
@UniqueConstraint(columnNames = {"cod_atividade", "dta_inicio_tarefa", "dta_termino_tarefa"}))
public class TbTarefa extends BaseModel {

    private Integer idtTarefa;
    private TbAtividade tbAtividade;
    private String nmeTarefa;
    private String dscTarefa;
    private Date dtaInicioTarefa;
    private Date dtaTerminoTarefa;

    public TbTarefa() {
    }

    public TbTarefa(TbAtividade tbAtividade, String nmeTarefa) {
        this.tbAtividade = tbAtividade;
        this.nmeTarefa = nmeTarefa;
    }

    public TbTarefa(TbAtividade tbAtividade, String nmeTarefa, String dscTarefa, Date dtaInicioTarefa, Date dtaTerminoTarefa) {
        this.tbAtividade = tbAtividade;
        this.nmeTarefa = nmeTarefa;
        this.dscTarefa = dscTarefa;
        this.dtaInicioTarefa = dtaInicioTarefa;
        this.dtaTerminoTarefa = dtaTerminoTarefa;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "idt_tarefa", unique = true, nullable = false)
    public Integer getIdtTarefa() {
        return this.idtTarefa;
    }

    public void setIdtTarefa(Integer idtTarefa) {
        this.idtTarefa = idtTarefa;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_atividade", nullable = false)
    public TbAtividade getTbAtividade() {
        return this.tbAtividade;
    }

    public void setTbAtividade(TbAtividade tbAtividade) {
        this.tbAtividade = tbAtividade;
    }

    @Column(name = "nme_tarefa", nullable = false, length = 80)
    public String getNmeTarefa() {
        return this.nmeTarefa;
    }

    public void setNmeTarefa(String nmeTarefa) {
        this.nmeTarefa = nmeTarefa;
    }

    @Column(name = "dsc_tarefa", length = 200)
    public String getDscTarefa() {
        return this.dscTarefa;
    }

    public void setDscTarefa(String dscTarefa) {
        this.dscTarefa = dscTarefa;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dta_inicio_tarefa", length = 19)
    public Date getDtaInicioTarefa() {
        return this.dtaInicioTarefa;
    }

    public void setDtaInicioTarefa(Date dtaInicioTarefa) {
        this.dtaInicioTarefa = dtaInicioTarefa;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dta_termino_tarefa", length = 19)
    public Date getDtaTerminoTarefa() {
        return this.dtaTerminoTarefa;
    }

    public void setDtaTerminoTarefa(Date dtaTerminoTarefa) {
        this.dtaTerminoTarefa = dtaTerminoTarefa;
    }
    // Sobrescrevendo metodos utilitarios importantes   
    @Override
    public String toString() {
        return this.nmeTarefa;
    }

    @Override
    public boolean equals(Object outro) {
        return (outro instanceof TbTarefa) && (this.idtTarefa != null)
                ? idtTarefa.equals(((TbTarefa) outro).getIdtTarefa())
                : (outro == this);
    }

    @Override
    public int hashCode() {
        return (idtTarefa != null)
                ? (this.getClass().hashCode() + idtTarefa.hashCode())
                : super.hashCode();
    }
}
